package com.zzh.lib.core.utils;


import android.text.TextUtils;

import java.math.BigDecimal;

/**
 * Created by ZZH on 2022/8/1.
 *
 * @Date: 2022/8/1
 * @Email: zzh_hz@126.com
 * @QQ: 1299234582
 * @Author: zzh
 * @Description: 数学操作工具类。对一些Double ,Float 加减乘除限制比较严格，
 * 避免0.999999或者是0.000001这种情况。
 */
public class HMathUtils {

    private HMathUtils() {
    }

    /**
     * 两个数相加
     * arg1 + arg2 =  result
     *
     * @param arg1 double
     * @param arg2 double
     * @return 和
     */
    public static String add(double arg1, double arg2) {
        BigDecimal bigArg1 = new BigDecimal(arg1);
        BigDecimal bigArg2 = new BigDecimal(arg2);
        BigDecimal addResult = bigArg1.add(bigArg2);
        return addResult.toString();
    }

    /**
     * 两个数值相减
     * arg1 - arg2 = result
     *
     * @param arg1 double
     * @param arg2 double
     * @return 差
     */
    public static String subtract(double arg1, double arg2) {
        BigDecimal bigArg1 = new BigDecimal(arg1);
        BigDecimal bigArg2 = new BigDecimal(arg2);
        BigDecimal subResult = bigArg1.subtract(bigArg2);
        return subResult.toString();
    }

    /**
     * 两个数值相乘
     * arg1 x arg2 = result
     *
     * @param arg1 double
     * @param arg2 double
     * @return 积
     */
    public static String multiply(double arg1, double arg2) {
        BigDecimal bigArg1 = new BigDecimal(arg1);
        BigDecimal bigArg2 = new BigDecimal(arg2);
        BigDecimal subResult = bigArg1.multiply(bigArg2);
        return subResult.toString();
    }

    /**
     * 两个数值相除
     * arg1 / arg2 = result
     *
     * @param arg1 double
     * @param arg2 double
     * @return 商
     */
    public static String divide(double arg1, double arg2) {
        BigDecimal bigArg1 = new BigDecimal(arg1);
        BigDecimal bigArg2 = new BigDecimal(arg2);
        BigDecimal subResult = bigArg1.divide(bigArg2);
        return subResult.toString();
    }

    /**
     * string 2 int 转换
     *
     * @param doubleValue 字符串
     * @return int类型的数据
     */
    public static int safeParseInt(String doubleValue) {
        if (TextUtils.isEmpty(doubleValue)) {
            return 0;
        }
        try {
            return Integer.parseInt(doubleValue);
        } catch (Exception ex) {
            return 0;
        }

    }

    /**
     * string 2 int 转换
     *
     * @param doubleValue 字符串
     * @return int 类型的数据
     */
    public static double safeParseDouble(String doubleValue) {
        if (TextUtils.isEmpty(doubleValue)) {
            return 0;
        }
        try {
            return Double.parseDouble(doubleValue);
        } catch (Exception ex) {
            return 0;
        }

    }
}
